package com.utility.interceptor;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;

import java.io.IOException;

public class OkHttpLoggingInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        //这个chain里面包含了request和response，所以你要什么都可以从这里拿
        Request request = chain.request();

        System.out.println("请求开始");
        Response response = chain.proceed(request);
        System.out.println("请求结束");
        //这里不能直接使用response.body().string()的方式输出日志
        //因为response.body().string()之后，response中的流会被关闭，程序会报错，我们需要创建出一
        //个新的response给应用层处理
        ResponseBody responseBody = response.peekBody(1024 * 1024);
        //如果里面包含http2.0表示对方支持http2协议并且是通过http2请求的
        System.out.println("protocol=" + response.protocol().name());
        System.out.println(responseBody.string());
        return response;
    }
}
